﻿/*
******************功能：客户端向服务器端提交数据****************
1、返回值：json格式字符串
格式：[{key:value},{key:value}]
数值：
key：div的table属性值
value：div内所有带control属性的控件的值组成的json串
2、参数：字符 ，值：提交按钮的Id
3、客户端设置
1）控件容器div：增加属性table，valtype
table：自定义值，建议定义表名，作为后台判断创建对象的参数
valtype：标识返回值类型。0：返回对象，1：返回对象列表
2）提交按钮： 增加属性 parentdiv
parentdiv表示包含获取控件的容器的ID，目前使用div多个值使用逗号隔开。例：parentdiv="empInfo,empPost,empExt"
3）传值控件：增加control属性
control：使用对应的数据库字段名
*/
function GetData(btnId) {
    var result = "";
    //取得包含获取控件的容器的ID组
    var parentDiv = $("#" + btnId).attr("parentdiv");
    if (parentDiv == null || parentDiv == "undefined") {
        return GetFormData();//取整个form的控件
    }
    var ValType = "0";
    var tlname = "";
    var myarr = parentDiv.split(",");
    var count = myarr.length;
    //分别取得各容器中的控件值
    for (var i = 0; i < count; i++) {
        if (myarr[i] == "") {
            continue;
        }
        var str = "";
        var item = myarr[i];
        tlname = $("#" + item).attr("table");
        vltype = $("#" + item).attr("valtype");
        str=GetControlVal(item);
        if (str.length > 0) {
            str = str.substring(1);
            str = "{" + str + "}";
            if (vltype == "1") {
                str = "[" + str + "]";
            }
        }
        result += ",{\"key\":\"" + tlname + "\",\"value\":\"\\\"" + str + "\\\"\"}";
    }
    if (result.length > 0) {
        result=result.substr(1);
        result = "[" + result + "]";
    } 
    return result;
    // return {"table":mytable,"data":mydata};
}
/*取得form中的数值*/
function GetFormData() {
    var str = "";
    $("[control]").each(function () {
        str += ",\"" + $(this).attr("control") + "\":\"" + $.trim($(this).val()) + "\"";
    });
    if (str.length > 0) {
        str = str.substring(1);
        str = "[{\"key\":\"form\",\"value\":\"" + str + "\"}]";
    }
    return str;
}
/*将提交数据连成字符串*/
//增加内容转义toHTML
function GetControlVal(item) {
    var str = "";
    $("[control]", $("#" + item)).each(function () {
        var controltype = "";
        var controlNm = "";
        if ($(this).attr("control") != "") {

            if ($(this).attr("controltype") != null && $(this).attr("controltype") != "undefined" && $(this).attr("controltype") != "") {
                controltype = $(this).attr("controltype");
            }
            switch (controltype) {
                case "drop":
                    controlNm = $(this).attr("control").split(",");
                    str += ",\\\"" + controlNm[0] + "\\\":\\\"" + toHTML($.trim($(this).val())) + "\\\"";
                    if (controlNm.length == 2 && controlNm[1] != "") {
                        // var title = $.trim($(this).find('option:selected').text());
                        var title = $(this).find('option:selected').text();
                        if (title.indexOf("请选择") >= 0) {
                            title = "";
                        }
                        str += ",\\\"" + controlNm[1] + "\\\":\\\"" + toHTML($.trim(title)) + "\\\"";
                    }
                    break;
                default:
                    str += ",\\\"" + $(this).attr("control") + "\\\":\\\"" + toHTML($.trim($(this).val()).replace(/\s+/g, "")) + "\\\"";
                    break;
            }
        }
    });
    return  str;
}
/*将提交非空数据连成字符串*/
function GetControlNoEmptyVal(item) {
  
    var str = "";
    $("[control]", $("#" + item)).each(function () {
        var controltype = "";
        var controlNm = "";
        if ($(this).attr("controltype") != null && $(this).attr("controltype") != "undefined" && $(this).attr("controltype") != "") {
            controltype = $(this).attr("controltype");
        }
        if ($.trim($(this).val()) != "") {
            controlNm = $(this).attr("control").split(",");
            str += ",\\\"" + controlNm[0] + "\\\":\\\"" + toHTML($.trim($(this).val()).replace(/\s+/g, "")) + "\\\"";
            switch (controltype) {
                case "drop":
                    if (controlNm.length == 2 && controlNm[1] != "") {
                        var title = $(this).find('option:selected').text();
                        if (title.indexOf("请选择") >= 0) {
                            title = "";
                        }
                        str += ",\\\"" + controlNm[1] + "\\\":\\\"" + toHTML($.trim(title).replace(/\s+/g, "")) + "\\\"";
                    }
                    break;
                case "txt":
                default:
                    if (controlNm.length == 2 && controlNm[1] != "") {
                        str += ",\\\"" + controlNm[1] + "\\\":\\\"" + toHTML($.trim($(this).val()).replace(/\s+/g, "")) + "\\\"";
                    }
                    break;
            }
        }
    });
    return str;
}
/**************************赋值给客户端**************************
功能：从服务端返回数据到客户端，并赋值给客户端控件，目前只支持赋值型控件
参数：
myDiv：控件容器ID
items：服务器端返回的json对象
*/
function SetControlVal(myDiv, items) {
    if (items == "undefined" || !items) {
        return;
    }
    if ($("#" + myDiv) == null || $("#" + myDiv) == "undefined") {
        return ;
    }
    var item = $.param(items);
    if (item.length == 0) {
        return;
    }
    
    var contr="";
    $("[Control]", $("#" + myDiv)).each(function () {
        var controltype = "";
        contr = $(this).attr("control");
        if (contr.indexOf(",") > 0) {
            contr = $(this).attr("control").split(",")[0];
        }
        var text = GetVal(contr, item);
        if ($(this).attr("controltype") != null && $(this).attr("controltype") != "undefined") {
            controltype = $(this).attr("controltype");
        }
        if (controltype == "text") {
            $(this).html(text);
        }
        else {
            $(this).val(text);
        }
    });
    FormatStrLen(myDiv);
}
/*取得数值*/
function GetVal(objName, objData) {
    var arrStr = objData.split("&");
    for (var i = 0; i < arrStr.length; i++) {
    if (arrStr[i].indexOf(objName)<0 ){
      continue;
    }
    var temp = arrStr[i].split("=");
    if (temp[0] == objName && temp[1]!="null")
       // return unescape(temp[1]);
        return decodeURIComponent(toTXT(temp[1]));
    }
    return "";
}
//格式化数据长度
function FormatStrLen(myDiv) {
    $("input[maxlength]", $("#" + myDiv)).each(function () {
        var len = $(this).attr("maxlength");
        if ($.trim($(this).val()).length > len) {
            $(this).val($(this).val().substring(0, len));
        }
    });
}
/*设置控件可用性*/
function SetControlEdit(flag) {
    if (flag == "0") {
        return;
    }
    $("[control]").each(function () {
        $(this).attr("disabled", "disabled");
       
    });

}
function SetControlEditById(flag, mydiv) {
    if (flag == "0") {
        return;
    }
    $("[control]", $("#" + mydiv)).each(function () {
        $(this).attr("disabled", "disabled");
    });
}
/*******************控件输入数据验证**********************
功能：验证主函数
参数说明：要检查的控件ID
*/
function CheckControlValid(btnId) {
    //取得包含获取控件的容器的ID组
    var parentDiv = $("#" + btnId).attr("parentdiv");
    if (parentDiv == null || parentDiv == "undefined") {
        return true; 
    }
    var result = true;
    var myarr = parentDiv.split(",");
    var count = myarr.length;
    //分别取得各容器中的控件值
    for (var i = 0; i < count; i++) {
        if (!result) {
            break;
        }
        if (myarr[i] == "") {
            continue;
        }
        var item = myarr[i];
        var controlvalid = "";
        $("[controlvalid]", $("#" + item)).each(function () {
            if ($(this).attr("controlvalid") != "")
                controlvalid = $(this).attr("controlvalid").split(";");
            for (var i = 0; i < controlvalid.length; i++) {
                if (controlvalid[i] == "") {
                    continue;
                }
                if (!eval(controlvalid[i])) {
                    result = false;
                    return false;
                }
            }
        });
    }
    return result;
}
/*验证传入div中的控件*/
function CheckDivControlValid(mydiv) {
    //取得包含获取控件的容器的ID组
    var result = true;
    var controlvalid = "";
    $("[controlvalid]", $("#" + mydiv)).each(function () {
        if ($(this).attr("controlvalid") != "")
            controlvalid = $(this).attr("controlvalid").split(";");
        for (var i = 0; i < controlvalid.length; i++) {
            if (controlvalid[i] == "") {
                continue;
            }
            if (!eval(controlvalid[i])) {
                result = false;
                return false;
            }
        }
    });
    return result;
}
/*功能：Input类型空值判断*/
//参数说明：要检查的控件，默认值
//返回值：false：不合法  true：合法*/
function checkEmpty(obj,vals) {
    if ($.trim($(obj).val()) == vals) {
        OpenAlert($(obj).attr("controltext") + "是必填项！");
        if (!$(obj).attr("disabled"))
       // $(obj).focus();
        return false;
    }
    return true;
}
/*功能：select类型空值判断*/
//参数说明：要检查的控件，默认值
//返回值：false：不合法  true：合法*/
function SelEmpty(obj, vals) {
    if ($.trim($(obj).val()) == vals) {
        OpenAlert($(obj).attr("controltext") + "是必选项！");
        if (!$(obj).attr("disabled"))
       // $(obj).focus();
        return false;
    }
    return true;
}
//功能介绍：检查是否为email格式
//参数说明：要检查的控件
//返回值：false：不合法  true：合法*/
function isEmail(obj) {
    if ($.trim($(obj).val()) == "") {
        return true;
    }
    if ($.trim($(obj).val()).search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
        return true;
    else {
        OpenAlert($(obj).attr("controltext") + "格式不正确！");
       // $(obj).select();
        return false;
    }
}
//功能介绍：检查字符串是否为合法手机号码格式
//参数说明：要检查的控件
//返回值：false：不合法  true：合法*/
function chkmobile(obj) {
    if ($.trim($(obj).val()) == "") {
        return true;
    }
    if ($.trim($(obj).val()).search(/^1(3|5|8)\d{9}$/) != -1)
        return true;
    else {
        OpenAlert($(obj).attr("controltext") + "格式不正确！");
      //  $(obj).select();
        return false;
    }
}
function chkTel(obj) {
    if ($.trim($(obj).val()) == "") {
        return true;
    }
    if ($.trim($(obj).val()).search(/^\d{3,4}-\d{6,8}(-\d{2,4})?$/) != -1)
        return true;
    else {
        OpenAlert($(obj).attr("controltext") + "格式：区号-号码-分机号！");
       // $(obj).select();
        return false;
    }
}
//功能介绍：身份证验证
//参数说明：要检查的控件
//返回值：false：不合法  true：合法*/
function isIdCardNo(obj) {
    if ($.trim($(obj).val()) == "") {
        return true;
    }
   var num = $.trim($(obj).val()).toUpperCase();
    //身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X。   
    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
        OpenAlert($(obj).attr("controltext") + "格式不正确！");
       // $(obj).select();
        return false;
    }
    return true;
}
//功能介绍：根据身份证取得生日
//参数说明：身份证ID
//返回值：生日
function GetBirthday(text) {
    var idCard = $.trim(text);
    var birDay = "";
    if (idCard.length == 18) {
        birDay = idCard.substring(6, 14);
    } else if (idCard.length == 15) {
        birDay = "19"+idCard.substring(6, 12);
    }
    if (birDay.length == 8) {
        birDay = birDay.substring(0, 4) + "-" + birDay.substring(4, 6) + "-" + birDay.substring(6, 8);
    }
    return birDay;
}
//html替换
function toHTML(str) {
    if (str == null || str == "undefined" || str=="") {
        return str;
    }
    str = str.replace(/&/g, '&amp;');
    str = str.replace(/"/g, '&quot;');
    str = str.replace(/</g, '&lt;');
    str = str.replace(/>/g, '&gt;');
    str = str.replace(/\n/g, '<br />');
    str = str.replace(/ /g, '&nbsp;');
    return str;
}
//text替换
function toTXT(str) {
  if (str == null || str == "undefined" || str=="") {
        return str;
    }
    str = str.replace(/&amp;/g,'&');
    str = str.replace(/&quot;/g,'"');
    str = str.replace(/&lt;/g,'<');
    str = str.replace(/&gt;/g,'>');
    str = str.replace(/<br \/>/g,'\n')
    str = str.replace(/&nbsp;/g,' ');
    return str;
}

function OpenAlert(text) {
    $.ligerDialog.warn(text);
    return false;
}
